今天來實作VIEW RECYCLING(視圖回收),我們需要ListView與Adapter的合作。
在MainActivty.java中,留下前次建立的ArrayList,並建立Adapter。
android.R.layout.simple_list_item_1
實際上是Android預定義的xml文件。ListAdapter
類別的adapter,但我們給他的是ArrayAdapter,這是因為ListAdapter是個interface,需要被實作,而BaseAdapter實作了部分的ListAdapter,最後ArrayAdapter實作了所有方法,也就是我們App所使用的具體的類別。程式碼如下:
package com.example.android.eventlistener_practice;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// create ArrayList
ArrayList<String> tortoises = new ArrayList<String>();
tortoises.add("Cyclemys trifasciata");
tortoises.add("Chinemys reevesiis");
tortoises.add("Mauremys mutica");
tortoises.add("Ocadia sinensis");
tortoises.add("Platysternon megacephalum");
tortoises.add("Trachemys scripta elegans");
tortoises.add("Chelodina siebenrocki");
tortoises.add( "Carettochelys insculpta");
tortoises.add("Chelydra serpentina");
tortoises.add("Chrysemys picta");
// 建立ArrayAdapter
ArrayAdapter itemsAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, tortoises);
ListView listView = findViewById(R.id.list);
listView.setAdapter(itemsAdapter);
}
}
在xml中,建立一個ListView
,並給他id為list
:
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
因此Adapter是data model,負責資料來源,ListView是UI,負責顯示並偵測使用者的手勢以便列出螢幕上可見的views。也就是說Adapter也可以搭配其他的View,像是GridView、Spinner等。